import {
	BASE_URL
} from './config.js'

//  公共的请求方法
function request({
	url,
	method,
	// 不填为不需要token,为true为需要token
	isAuth,
	data,
	// 默认显示Loading
	isShowLoading = true
}) {
	return new Promise((resolve, reject) => {
		// 接口不需要传token,默认值为{}
		let header = {
			'content-type': 'application/x-www-form-urlencoded'
		}
		if (isAuth) {
			// 接口需要传token
			let token = uni.getStorageSync('token')
			// 接口需要token，但是没有token，跳转登录页
			if (!token) {
				uni.showToast({
					icon: 'none',
					title: '请先登录！'
				})
				uni.navigateTo({
					url: '/pages/login/index'
				})
				return
			}
			header.TOKEN = token
		}
		// 请求前开启loading
		if (isShowLoading) {
			uni.showLoading({
				title: '加载中',
				mask: true
			})
		}

		uni.request({
			url: BASE_URL + url,
			method,
			header,
			data,
			complete: res => {
				let {
					statusCode
				} = res
				// 请求后关闭loading
				if (isShowLoading) {
					uni.hideLoading()
				}
				if (statusCode === 400) {
					uni.clearStorageSync()
					uni.showToast({
						icon: 'none',
						title: '登录凭证过期，请重新登录'
					})
					// 跳转登录页面
					uni.navigateTo({
						url: '/pages/login/login'
					})
				} else if (statusCode === 200) {
					// 请求成功后
					let {
						code
					} = res.data;
					// 200成功
					// console.log('code', code);
					if (code == 200) {
						resolve(res.data)
					} else {
						// 如果有其他规则，可以直接加这
						resolve(res.data)
					}
				} else {
					uni.showToast({
						icon: 'none',
						title: '网络请求失败'
					})
					reject(res)
				}
			}
		})
	})
}

export {
	request
}
